package com.chengqs.tomdog.utils;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 解析和格式化 GMT 时间
 */
public class DateUtils {
    static final ZoneId GMT = ZoneId.of("Z");

    /**
     * 解析 GMT 时间
     * @param s 表示 RFC 1123 格式日期时间的字符串
     * @return 毫秒级时间戳
     */
    public static long parseDateTimeGMT(String s) {
        // 解析为 ZonedDateTime 对象
        ZonedDateTime zdt = ZonedDateTime.parse(s, DateTimeFormatter.RFC_1123_DATE_TIME);
        // 转换为毫秒级的时间戳返回
        return zdt.toInstant().toEpochMilli();
    }

    /**
     * 格式化 GMT 时间
     * @param ts 毫秒级时间戳
     * @return RFC 1123 格式的日期时间字符串
     */
    public static String formatDateTimeGMT(long ts) {
        // 转换为 ZonedDateTime 对象
        ZonedDateTime zdt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(ts), GMT);
        // RFC 1123 格式的日期时间字符串
        return zdt.format(DateTimeFormatter.RFC_1123_DATE_TIME);
    }
}
